/*
 * EstoqueComponenteAS.java
 *
 * Created on August 5, 2007, 10:14 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package tcc.applicationService.Componente;

import tcc.applicationService.AbstractAS;
import tcc.domain.solicitacao.componente.SolicitacaoComponente;
import tcc.domain.produto.Componente;
import tcc.dao.estoque.ItemEstoqueComponenteDao;
import tcc.domain.estoque.componente.ItemEstoqueComponente;
import tcc.domain.estoque.componente.TransacaoEstoqueComponente;
import tcc.domain.produto.Produto;
import tcc.exception.business.TccBusinessException;
import tcc.util.PersistenceUtil;
import tcc.exception.system.TccASException;




public class EstoqueComponenteAS extends AbstractAS {

    /**
     * Creates a new instance of EstoqueComponenteAS
     */
    private EstoqueComponenteAS() {
    }
    private static EstoqueComponenteAS instance;

    public static synchronized EstoqueComponenteAS getIsntance() {
        if (instance == null) {
            instance = new EstoqueComponenteAS();
        }
        return instance;
    }

    public void adicionarItem(Componente c, Double qtd) throws TccBusinessException, TccASException {

        PersistenceUtil.getInstance().getTransaction().begin();
        try {
            ItemEstoqueComponenteDao dao = new ItemEstoqueComponenteDao();
            ItemEstoqueComponente item = dao.findByComponente(c);
            item.setQuantidadeRestante(item.getQuantidadeRestante()+qtd);

            TransacaoEstoqueComponente tx = new TransacaoEstoqueComponente();
//        } catch (TccBusinessException ex) {
//            PersistenceUtil.getInstance().getTransaction().rollback();
//            throw ex;
        } catch (Exception ex) {
            PersistenceUtil.getInstance().getTransaction().rollback();
            throw new TccASException(ex);
        }
    }

    public void removerComponentes(Componente c, Double qtd) throws TccBusinessException, TccASException {
        adicionarItem(c, Double.valueOf(-qtd.doubleValue()));
    }

    public void alocarItemsPorProduto(Produto produto) {
    }
    public void receberComponentesDaSolicitacao(SolicitacaoComponente solicitacao) {
            
    }
}